#ifndef VEC3_H
#define VEC3_H

#include "real.h"

class vec3
{
public:
    int ic;
    real x, y, z;
    vec3(){x=0.;y=0.;z=0.;ic=0;}
    vec3(real tx,real ty,real tz,int id=0){x=tx;y=ty;z=tz;ic=id;}
    //vec3(vec3& v1){x=v1.x;y=v1.y;z=v1.z;}
    //vec3(real tx,real ty,real tz){x=tx;y=ty;z=tz;}
 

    friend vec3 operator+ (vec3  v1, vec3 v2);
    friend vec3 operator- (vec3  v1, vec3 v2);
    friend vec3 operator* (int   a, vec3 v2);
    friend vec3 operator* (float a, vec3 v2);
    friend vec3 operator* (double a, vec3 v2);
    friend real operator* (vec3 v1, vec3 v2);
    friend void operator+=(vec3 &v1, vec3 v2);
    friend void operator-=(vec3 &v1, vec3 v2);
    friend void operator*=(vec3 &v1, real a);


    real module();
    void display();

    /*
    //vec3  operator+ (vec3 v) {return vec3(x+v.x,y+v.y,z+v.z);};
    //vec3  operator* (float a){return vec3(a*x,a*y,a*x);};
    //vec3  operator* (double a){return vec3(a*x,a*y,a*x);};
    friend vec3 operator+ (const vec3 &v1, const vec3 &v2);
    friend vec3 operator- (const vec3 &v1, const vec3 &v2);
    friend vec3 operator* (const int  &a, const vec3 &v2);
    friend vec3 operator* (const float &a, const vec3 &v2);
    friend vec3 operator* (const double &a, const vec3 &v2);
    */

};


static vec3 VO(0, 0, 0);

#endif
	
	
